package com.java.zhuiyun.api.article.controller;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.java.zhuiyun.api.article.entity.Article;
import com.java.zhuiyun.api.article.mapper.ArticleMapper;
import com.java.zhuiyun.api.article.service.IArticleService;
import com.java.zhuiyun.api.SysUser.common.Result;
import com.java.zhuiyun.util.TokenUtils;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @ClassName ArticleController
 * @Description TODO 文章管理 用于uniapp文章列表 （已作废目前没用到）
 * @Author xy
 * @Date 2023/9/13 9:01
 **/
@RestController
@Api(tags = "文章管理")
@RequestMapping("/article")
@Slf4j
public class ArticleController {

    @Resource
    private IArticleService articleService;

    @Resource
    private ArticleMapper articleMapper;

    /**
     * @Author xy
     * @Description todo 文章管理的添加修改
     * @param article
     * @Date 2023年9月13日10:10:40
     * @return boolean 返回类型
     */
    @PostMapping("/save")
    public boolean save(@RequestBody Article article) {
        if (article.getId() == null){
            article.setTime(DateUtil.now());
            article.setUser(TokenUtils.getCurrentUser().getNickName());
        }
        return articleService.saveArticle(article);
    }

    /**
     * @Author xy
     * @Description todo 文章管理的分页查询
     * @Date 2023年9月13日10:46:17
     * @Return Page<Article> 返回类型
     * @param pageNum 当前页
     * @param pageSize 每页显示条数
     * @param name 文章标题
     */
    @GetMapping("/page")
    public Page<Article> findPage(@RequestParam Integer pageNum,
                                  @RequestParam Integer pageSize,
                                  @RequestParam String name) {
        QueryWrapper<Article> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("id");
        if (StrUtil.isNotBlank(name)){
            queryWrapper.like("name", name);
        }
        return articleService.page(new Page<>(pageNum, pageSize), queryWrapper);
    }

    /**
    * @Author xy
    * @Description todo 文章管理的逻辑删除接口 （已作废目前没用到）
    * @Date 2023/10/12 13:24
    * @Return Result 返回类型
    * @param id 文章id
    */
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        Article article = articleMapper.selectById(id);
        article.setDelFlag(true);
        articleMapper.deleteById(id);
        return Result.success();
    }
}
